W1. Архитектура компьютера, принципы CPU, иерархия памяти, платы FPGA

Автор

Artem Burmyakov

Дата публикации

18 сентября 2025 г.

Quiz | Flashcards

1. Краткое содержание

1.1 Что такое компьютер?

Компьютер — это электронная машина, предназначенная для автоматического выполнения последовательности арифметических или логических операций по заданной программе. Он обрабатывает входные данные (input data) и выдаёт результат (output result). В основе работы лежит обработка двоичных данных — цепочек нулей и единиц: вход преобразуется в двоичный выход согласно заранее заданной последовательности команд.

1.2 Стек решения задачи

Решение задачи на компьютере раскладывается на несколько уровней абстракции — от физического мира до прикладной программы. Это часто изображают как стек.

  1. Задача (Problem to Solve): цель на высоком уровне.
  2. Алгоритм и структуры данных (Algorithm + Data Structures): концептуальное решение.
  3. Пользовательская программа (User Program): реализация на языке высокого уровня (например, C++, Python).
  4. Системные программы (System Programs): ОС и компиляторы, переводящие программу пользователя в машинные инструкции.
  5. Архитектура набора команд процессора (ISA, Instruction Set Architecture): конкретный набор низкоуровневых команд, которые может выполнять аппаратура. Это интерфейс между hardware и software.
  6. Микроархитектура (Microarchitecture): конкретная реализация ISA в железе (как устроены и соединены узлы CPU).
  7. Логические схемы (Logic Circuits): базовые блоки вроде вентилей AND и OR, реализующие микроархитектуру.
  8. Электроны, фотоны и т.д. (Electrons, Photons, etc.): физика, на которой держатся схемы.

Архитектура компьютера (computer architecture) изучает уровни от ISA вниз до логических схем, включая взаимодействие с системным ПО.

1.3 Что такое архитектура компьютера?

Computer Architecture — область информатики и инженерии, которая охватывает три главных направления:

  1. Организация аппаратуры компьютерных систем: как устроены и связаны CPU, память и устройства ввода-вывода (I/O).
  2. Принципы взаимодействия аппаратуры и ПО: правила и способы, которыми программа управляет железом, прежде всего через набор команд.
  3. Аспекты, связанные с производительностью: анализ и проектирование систем с упором на скорость, энергоэффективность и стоимость.

Изучение архитектуры помогает проектировать эффективное железо, писать быстрый софт и подстраивать вычислительные системы под конкретные задачи.

1.4 Основные компоненты компьютера

Современная архитектура строится вокруг нескольких ключевых взаимодействующих частей.

1.4.1 CPU (Central Processing Unit)

«Мозг» компьютера — CPU выполняет команды программы. Это сложная электрическая схема с несколькими важными узлами:

  • Control Unit (CU) — блок управления: выбирает команды из памяти, декодирует их и координирует остальные части.
  • Arithmetic-Logic Unit (ALU) — арифметико-логическое устройство: арифметика (сложение, вычитание и т.д.) и логика (AND, OR и т.п.).
  • Registers — регистры: небольшое число очень быстрых ячеек памяти внутри CPU; в них держатся данные, с которыми идёт активная работа (аргументы ALU или результат).
1.4.2 Принцип работы процессора

Процессор получает электрические сигналы на входных выводах (input pins) и выдаёт результат на выходных (output pins). На входе, в частности:

  • Instruction Code — двоичный код операции (например, 0 для логического OR, 1 для AND).
  • Input Arguments — данные, над которыми выполняется операция.

Вместе код команды и аргументы образуют машинную инструкцию (machine instruction) (например, двоичная строка 010 может означать «OR для значений 1 и 0»).

1.4.3 Системная память (RAM)

Random Access Memory (RAM) — основное рабочее пространство: здесь хранятся команды программы и данные для быстрого доступа CPU. RAM volatile — энергозависимая: при отключении питания содержимое теряется.

1.4.4 Устройства хранения (Storage Devices)

Долговременное non-volatile хранение ОС, приложений и файлов (SSD, HDD). Для выполнения данные подгружаются из хранилища в RAM.

1.4.5 Устройства ввода-вывода (I/O)

Периферия: клавиатура, монитор, принтер, сетевые интерфейсы и т.д.

1.4.6 Шина связи (Communication Bus)

Набор электрических путей между компонентами. Скорость шины сильно влияет на производительность системы. Большие задержки при обмене CPU и памяти приводят к проблеме memory wall (memory wall problem) — ключевому ограничению современных машин.

1.5 Иерархия памяти

Чтобы сбалансировать скорость, стоимость и объём, память организуют иерархически; данные двигаются между уровнями в зависимости от частоты обращений CPU.

  1. Регистры (внутри CPU): самый быстрый доступ (<1 нс), наименьший объём (сотни байт).
  2. Кэш CPU (L1, L2, L3): очень быстрая память на кристалле или рядом с CPU; хранит копии часто используемых данных из RAM.
    • L1 Cache: в каждом ядре, самый быстрый и маленький (десятки килобайт).
    • L2 Cache: медленнее L1, но больше.
    • L3 Cache (LLC — Last Level Cache): общий для ядер, самый медленный и крупный уровень кэша (мегабайты).
  3. Системная память (RAM): гигабайты, но существенно медленнее кэша.
  4. Накопители (SSD/HDD): терабайты, самый медленный доступ.

1.6 Архитектуры CPU и многоядерность

Проект CPU задаётся его ISA (Instruction Set Architecture).

1.6.1 Широко известные архитектуры
  • Intel x86 / AMD64: доминирует на десктопах и серверах (CISC — Complex Instruction Set Computer).
  • ARM: мобильные и встраиваемые системы (RISC — Reduced Instruction Set Computer).
  • RISC-V: открытый современный стандарт RISC.
  • Также упоминаются Baikal и Elbrus.
1.6.2 Многоядерные системы

Современные CPU — multicore processors: на одном кристалле несколько независимых вычислительных блоков (cores). У каждого ядра свои ALU, CU и обычно L1, тогда как L3 и основная память часто разделяются. Это даёт параллельное выполнение задач, но усложняет scheduling — планирование работы по ядрам.

1.7 Процессоры и FPGA

Обычный CPUgeneral-purpose processor с фиксированной схемой. FPGA (Field-Programmable Gate Array) — ИС с решёткой настраиваемых логических блоков, которую пользователь может перепрограммировать после изготовления.

1.7.1 Ключевые отличия
  • Программируемость: у CPU железо фиксировано, исполняется софт; у FPGA переконфигурируется сама аппаратная схема.
  • Набор команд: у CPU фиксированный instruction set производителя; у FPGA «встроенного» набора команд нет — проектируются цифровые схемы напрямую.
  • Скорость вычислений: для общих задач CPU оптимизирован; для узкоспециализированных параллельных задач заказная логика на FPGA может быть существенно быстрее.
  • Потребление: FPGA обычно прожорливее CPU на ту же задачу из‑за программируемой природы.
  • Стоимость: FPGA в среднем дороже массовых CPU.
1.7.2 Типичные применения FPGA

Прототипирование процессоров, высокочастотный трейдинг, сигнальная обработка в реальном времени и другие задачи с массовым параллелизмом и низкой задержкой.

1.8 Программирование FPGA и учебные платы

FPGA программируют на HDL (Hardware Description Language) — например, Verilog или VHDL. Эти языки описывают структуру аппаратных схем, а не последовательность команд как в обычном ПО. Средство вроде Intel Quartus Prime Lite синтезирует HDL в конфигурационный файл, который загружается в FPGA.

Учебные платы вроде DE10-Lite MAX 10 содержат FPGA и набор периферии:

  • Светодиоды и переключатели
  • Кнопки
  • Семисегментные индикаторы
  • Выход VGA
  • Акселерометр (G-Sensor)
  • Выводы GPIO (General-Purpose Input/Output)

2. Определения

  • Computer: электронное устройство, обрабатывающее данные путём выполнения последовательности команд, заданных программой.
  • Computer Architecture: проектирование и организация компьютерной системы — компоненты, связи и интерфейс «железо–ПО» (набор команд).
  • CPU (Central Processing Unit): узел, выполняющий команды программы, арифметику, логику и управление.
  • ALU (Arithmetic-Logic Unit): цифровая схема в CPU для арифметики и побитовой логики.
  • CU (Control Unit): часть CPU, интерпретирующая команды и формирующая управляющие сигналы.
  • Register: маленькая сверхбыстрая ячейка памяти внутри CPU.
  • Instruction Set Architecture (ISA): набор команд, которые может выполнять CPU; интерфейс между аппаратурой и программным уровнем.
  • System Memory (RAM): энергозависимая память для активных данных и машинного кода.
  • CPU Cache: быстрая энергозависимая память с копиями часто используемых данных из основной памяти.
  • Memory Hierarchy: многоуровневая структура памяти и хранилищ, балансирующая скорость, стоимость и объём.
  • FPGA (Field-Programmable Gate Array): ИС с настраиваемыми логическими блоками и соединениями, перепрограммируемыми пользователем после выпуска.
  • Verilog HDL: язык описания аппаратуры для моделирования и проектирования цифровых систем.
  • Multicore Processor: один кристалл CPU с двумя и более независимыми ядрами (cores).